<?php

include_once 'Conexion.php';

class Orden extends Conexion {
    private $idOrden;
    private $numOrden;
    private $precioVenta;
    private $costoMaquila;
    private $fechaLlegada;
    private $fechaEntrega;
    private $numFactura;
    private $numNotaCredito;
    private $montoCredito;
    private $numNotaCargo;
    private $montoCargo;
    private $montoTotal;
    //Determina si la orden esta pendiete de entregar (P) o ya se entrego completa (E)
    private $estado;
    private $cantPrendas;
    private $folio;
    private $idCliente;


    public function obtenerTotalOrdenes () {
        parent::conectar();
        
        $query = "SELECT cantidadprendas, precioventa FROM orden WHERE eliminada=0";
        
        //AND numorden REGEXP '^......$'

        $sqlResult = $this->ejecutarConsulta($query);

        $this->desconectar();

        //Verificamos que la consulta haya retornada alguna fila
        if ($sqlResult == false) {
            
            //Si no retorno nada, regresamos 0
            return 0;
        } else {

            //En caso contrario recorremos la matriz y sumanos los montos para conseguir el totol
            $acum = 0;

            while ($arrMontos = mysql_fetch_array($sqlResult)) {
                $montoTemp = $arrMontos;

                $acum += ($montoTemp['cantidadprendas'] * $montoTemp['precioventa']);
            }

            return $acum;
        }
    }
    
    function getNumOrdenClaveModeloById ($idOrden) {
        $this->conectar();
        
        if ($idOrden == "") {
            
            return "No Aplica";
        } else {
            $query = $this->ejecutarConsulta("SELECT clave, numorden
                                                FROM  `orden` , modelodeorden
                                                    WHERE orden.idorden = modelodeorden.idorden
                                                        AND orden.idorden =$idOrden");

            $row = mysql_fetch_array($query);

            if (!$row) {
                $numclave = "No Aplica";
            } else {
                $numclave = $row[0]."/".$row[1];
            }

            parent::desconectar();

            return $numclave;            
        }
    }


    function __construct($numOrden, $folio, $idCliente, $precioVenta, $fechaLlegada, $costoMaquila) {
        $this->numOrden = $numOrden;
        $this->folio = $folio;
        $this->idCliente = $idCliente;
        $this->precioVenta = $precioVenta;
        $this->fechaLlegada = $fechaLlegada;
        $this->costoMaquila = $costoMaquila;
    }
    
    public function ordenesDeFactura ($idFactura) {
        $this->conectar();

        $sql = "SELECT numorden, precioventa, cantidadprendas 
                    FROM orden WHERE idfactura=$idFactura AND eliminada=0";

        $sqlResult = $this->ejecutarConsulta($sql);

        $this->desconectar();

        return $sqlResult;
    }
    
    public function obtenerOrdenesListaFactura ($idCliente) {
        $this->conectar();  

        $sql = "SELECT numorden, clave, orden.idorden 
                    FROM orden, cliente, modelodeorden  
                        WHERE orden.idorden=modelodeorden.idorden 
                        AND orden.idcliente=cliente.idcliente AND cliente.idcliente=$idCliente 
                        AND eliminada=0 ORDER BY numorden";

        $sqlResult = $this->ejecutarConsulta($sql);

        $this->desconectar();

        return $sqlResult;
    }


    public function asignarMaquilero ($idMaquilero, $idOrden, $costo, $fecha) {
        $this->conectar();
        
        $resul = $this->ejecutarQuery("UPDATE maquilerodeorden SET idmaquilero=$idMaquilero, fechadesolicitud='$fecha' WHERE idorden=$idOrden");
        
        $resul = $this->ejecutarQuery("UPDATE orden SET costomaquila=$costo WHERE idorden=$idOrden");

        $this->desconectar();
        
        return $resul;
    }


    public function registrar (Orden $orden) {
        $this->conectar();
        
        //SOLO INSERTA A CONFECCIONES ARA
        $resul = $this->ejecutarQuery("INSERT INTO orden(numorden, folio, idCliente, precioventa, costomaquila, fechallegada, estado, idrazonsocial) VALUES 
                ('$orden->numOrden', '$this->folio', $this->idCliente, $orden->precioVenta, $orden->costoMaquila,'$orden->fechaLlegada', 'P', 6)");
                                                                                                        //CAMBIAR ESTA IDRAZONSOCIAL
        
        /*
        $query = $this->ejecutarConsulta("SELECT idorden FROM orden WHERE numorden='$orden->numOrden' AND fechaLlegada='$orden->fechaLlegada' AND eliminada=0");
        
        $row = mysql_fetch_array($query);
            
        if (!$row) {
            $this->idOrden = 0;
        } else {
            $this->idOrden = $row[0];
        }
        
        $idOrden = $this->idOrden;
        
        $resul = $this->ejecutarQuery("INSERT INTO maquilerodeorden (idmaquilero, idorden) VALUES (0, $idOrden)");
         * 
         */
        
        $this->desconectar();
        
        return $resul;
    }
    
    public function asignarFactura ($idOrden, $idFactura) {
        $this->conectar();
        
        $resul = $this->ejecutarQuery("UPDATE orden SET idfactura=$idFactura WHERE idOrden=$idOrden");

        $this->desconectar();
        
        return $resul;
    }
    
    public function getNombreMaquilero ($idOrden) {
        
        $this->conectar();

        $sql = "SELECT razonsocial.nombre 
                    FROM orden, razonsocial, maquilerodeorden, maquilero 
                        WHERE maquilerodeorden.idorden=orden.idorden 
                            AND maquilero.idmaquilero=maquilerodeorden.idmaquilero 
                            AND razonsocial.idrazonsocial=maquilero.idrazonsocial AND orden.idorden=$idOrden";

        $row = mysql_fetch_array($this->ejecutarConsulta($sql));
            
        if (!$row) {
            $nomMaquilero = "Sin Maquilero";
        } else {
            $nomMaquilero = $row[0];
        }

        parent::desconectar();

        return $nomMaquilero;
    }

    public function getOrdenesInventario ($fecha) {
        
        $fecha = parent::getFecha($fecha);
        
        $this->conectar();
        
        //TODAS
        $sql = "SELECT orden.idorden, clave, numorden, cantidadprendas, fechaentrega, fechallegada, estado, precioventa, idmodelodeorden, costomaquila 
                    FROM orden, modelodeorden  
                        WHERE orden.idorden=modelodeorden.idorden AND eliminada=0 AND fechallegada > '$fecha' ORDER BY orden.fechallegada";
        
        /* CONFECCIONES ARA
        $sql = "SELECT orden.idorden, clave, numorden, cantidadprendas, fechaentrega, fechallegada, estado, precioventa, idmodelodeorden, costomaquila 
                    FROM orden, modelodeorden, modelo 
                        WHERE orden.idorden=modelodeorden.idorden 
                            AND modelodeorden.idmodelo=modelo.idmodelo AND orden.idrazonsocial=6 AND eliminada=0 AND fechallegada > '$fecha' ORDER BY orden.fechallegada";
         * 
         */

        $sqlResult = $this->ejecutarConsulta($sql);

        $this->desconectar();

        return $sqlResult;
    }
    
    public function getOrdenByID ($idOrden) {
        
        $this->conectar();

        $sql = "SELECT orden.idorden, razonsocial.nombre, clave, numorden, cantidadprendas, 
                                            fechallegada, estado, precioventa, idmodelodeorden 
                                        FROM orden, modelodeorden, cliente, razonsocial 
                                            WHERE orden.idorden=modelodeorden.idorden AND orden.idcliente=cliente.idcliente 
                                                AND cliente.idrazonsocial=razonsocial.idrazonsocial  
                                                AND orden.idorden=$idOrden";

        $sqlResult = $this->ejecutarConsulta($sql);

        $this->desconectar();

        return mysql_fetch_array($sqlResult);
    }
    
    public function getMontoOrden($idOrden) {
        $this->conectar();
                
        $query = $this->ejecutarConsulta("SELECT (precioventa * cantidadprendas) FROM orden WHERE idorden=$idOrden");
        
        $row = mysql_fetch_array($query);
            
        if (!$row) {
            $this->montoTotal = 0;
        } else {
            $this->montoTotal = $row[0];
        }
        
        $monto = $this->montoTotal;

        parent::desconectar();

        return $monto;
    }

    public function recuperarIdOrden($numOrden, $fechaLlegada) {
        $this->conectar();
                
        $query = $this->ejecutarConsulta("SELECT idorden FROM orden WHERE numorden='$numOrden' AND fechaLlegada='$fechaLlegada' AND eliminada=0");
        
        $row = mysql_fetch_array($query);
            
        if (!$row) {
            $this->idOrden = 0;
        } else {
            $this->idOrden = $row[0];
        }
        
        $idOrden = $this->idOrden;

        parent::desconectar();

        return $idOrden;
    }

    public function obtenerOrdenes ($fechaIni, $fechaFin) {
        
        $fechaIni = parent::getFecha($fechaIni);
        $fechaFin = parent::getFecha($fechaFin);
        
        $this->conectar();

        $sql = "SELECT orden.idorden, razonsocial.nombre, modelodeorden.clave, numorden, cantidadprendas, modelodeorden.descripcion, 
                    fechallegada, estado, idmodelodeorden 
                FROM orden, modelodeorden, cliente, razonsocial 
                    WHERE orden.idcliente=cliente.idcliente AND orden.idorden=modelodeorden.idorden AND cliente.idrazonsocial=razonsocial.idrazonsocial AND eliminada=0 
                        AND fechallegada > '$fechaIni' AND fechallegada < '$fechaFin' ORDER BY orden.fechallegada";

        $sqlResult = $this->ejecutarConsulta($sql);

        $this->desconectar();

        return $sqlResult;
    }
    
    public function obtenerOrdenesPendientes () {
        $this->conectar();

        $sql = "SELECT orden.idorden, razonsocial.nombre, clave, numorden, cantidadprendas, 
                    fechallegada, estado, numbordado, numtejido, numhabilita, numserigra, idmodelodeorden 
                FROM orden, modelodeorden, modelo, cliente, razonsocial 
                    WHERE orden.idorden=modelodeorden.idorden AND modelodeorden.idmodelo=modelo.idmodelo
                        AND modelo.idcliente=cliente.idcliente AND cliente.idrazonsocial=razonsocial.idrazonsocial AND orden.estado='P' AND eliminada=0";

        $sqlResult = $this->ejecutarConsulta($sql);

        $this->desconectar();

        return $sqlResult;
    }
    
    public function getIdOrden() {
        return $this->idOrden;
    }

    public function getMontoTotal() {
        return $this->montoTotal;
    }
    public function setIdOrden($idOrden) {
        $this->idOrden = $idOrden;
    }

    public function getNumOrden() {
        return $this->numOrden;
    }

    public function setNumOrden($numOrden) {
        $this->numOrden = $numOrden;
    }

    public function getPrecioVenta() {
        return $this->precioVenta;
    }

    public function setPrecioVenta($precioVenta) {
        $this->precioVenta = $precioVenta;
    }

    public function getCostoMaquila() {
        return $this->costoMaquila;
    }

    public function setCostoMaquila($costoMaquila) {
        $this->costoMaquila = $costoMaquila;
    }

    public function getFechaLlegada() {
        return $this->fechaLlegada;
    }

    public function setFechaLlegada($fechaLlegada) {
        $this->fechaLlegada = $fechaLlegada;
    }

    public function getFechaEntrega() {
        return $this->fechaEntrega;
    }

    public function setFechaEntrega($idOden, $fechaEntrega) {
        $this->conectar();
        
        $resul = $this->ejecutarQuery("UPDATE orden SET fechaentrega='$fechaEntrega', estado='T' WHERE idorden=$idOden");

        $this->desconectar();
        
        return $resul;
    }

    public function getNumFactura() {
        return $this->numFactura;
    }

    public function setNumFactura($numFactura) {
        $this->numFactura = $numFactura;
    }

    public function getNumNotaCredito() {
        return $this->numNotaCredito;
    }

    public function setNumNotaCredito($numNotaCredito) {
        $this->numNotaCredito = $numNotaCredito;
    }

    public function getMontoCredito() {
        return $this->montoCredito;
    }

    public function setMontoCredito($montoCredito) {
        $this->montoCredito = $montoCredito;
    }

    public function getNumNotaCargo() {
        return $this->numNotaCargo;
    }

    public function setNumNotaCargo($numNotaCargo) {
        $this->numNotaCargo = $numNotaCargo;
    }

    public function getMontoCargo() {
        return $this->montoCargo;
    }

    public function setMontoCargo($montoCargo) {
        $this->montoCargo = $montoCargo;
    }

    public function getEstado() {
        return $this->estado;
    }

    public function setEstado($idOrden, $estado) {
        $this->conectar();
        
        $resul =  $this->ejecutarQuery("UPDATE orden SET estado='$estado' WHERE idOrden=$idOrden");
        
        $this->desconectar();
        
        return $resul;
    }

    public function getCantPrendas($idOrden) {
        $this->conectar();
                
        $query = "SELECT pr.cantidad FROM orden AS ord JOIN modelodeorden AS mo ON (ord.idorden=mo.idorden) 
                                            JOIN prenda AS pr ON (mo.idmodelodeorden=pr.idmodelodeorden) WHERE ord.idorden=$idOrden";
        
        $sqlResult = $this->ejecutarConsulta($query);

        $this->desconectar();

        //Verificamos que la consulta haya retornada alguna fila
        if ($sqlResult == false) {
            
            //Si no retorno nada, regresamos 0
            return 0;
        } else {

            //En caso contrario recorremos la matriz y sumanos los montos para conseguir el totol
            $acum = 0;

            while ($arrCantidade = mysql_fetch_array($sqlResult)) {
                $cantiTemp = $arrCantidade;

                $acum += ($cantiTemp['cantidad']);
            }

            return $acum;
        }
    }

    public function setCantPrendas($idOrden, $cantPrendas) {
        $this->conectar();
        
        $resul = $this->ejecutarQuery("UPDATE `orden` SET `CANTIDADPRENDAS`=$cantPrendas WHERE `IDORDEN`=$idOrden");
        
        $this->desconectar();
        
        return $resul;
    }
    
    public function setEstadoAEliminada($idOden) {
        $this->conectar();
        
        $resul = $this->ejecutarQuery("UPDATE orden SET eliminada=1 WHERE idorden=$idOden");

        $this->desconectar();
        
        return $resul;
    }
}
?>